<template>
  <div id="app">
    <siteTop v-if="moutent"></siteTop>
    <adminLeft v-if="moutent"></adminLeft>

  <countDown v-if="isLogin"></countDown>

    <router-view v-if="isRouterAlive"></router-view>
  </div>
</template>

<script>
import siteTop from './components/common/siteTop/siteTop'
import adminLeft from './components/common/adminLeft/adminLeft'
import countDown from './components/common/countDowm/countDown' 

export default {
  name:'App',
  provide(){
    return{
      //祖组件向后代注入一个依赖，不管多深都可以
      reload:this.reload
    }
  },
  data(){
    return{
      isRouterAlive:true
    }
  },
  components:{
    siteTop,
    adminLeft,
    countDown
  },
  computed:{
    //判断路由
    moutent(){
      this.path = this.$route.path
      switch(this.path){
        case '/Admin/login':
          return false
          break
        default:
          return true
      }
    },
    //判断是否为登录界面
    isLogin(){
      this.path = this.$route.path
      if(this.path != '/Admin/login' && this.$store.state.adminToken === ''){
        return true
      }
    }
  },
  methods:{
    reload(){
      this.isRouterAlive = false
      //this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它，然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样，不同的是回调的 this 自动绑定到调用它的实例上。
      this.$nextTick( () => {
        this.isRouterAlive = true
      })
    }
  },
  beforeCreate(){
    //创建前
    //split(";")[0]截取;前面的字符如果为[1]截取后面的
    //判断是否已经登录
      if(sessionStorage.getItem("adminToken") !== null){
        let  tokenContent = sessionStorage.getItem("adminToken")
        let  nameContent = sessionStorage.getItem("adminName")

     //修改vuex中的数据
      this.$store.commit({
         type:'upDateaAminToken',
         token:tokenContent
      })

      this.$store.commit({
         type:'upDateaAdminName',
         name:nameContent
      })
    }


  }
}
</script>

<style lang="scss">
@import url(./assets/css/base.css);
</style>
